ADD forderungsberechnungsspeicher%,12+10*(maximalbuchungen%+1)+(maximalbuchungen#+1)*80+(12+10*(maximalbuchungen%+1)) ! forderungstextfeld max ca. 80 Zeichen alng und Forderungsartfeld
' Gesamtspeicherbedarf incl. 50.000 Bytes für sonstiges wie Temporärfelder
' ohne Hintergrundrettung, da die über MALLOC im Systemspeicher läuft
' 1. HF-Zeilen: Wenn überhaupt, muß mindestens Katnr, Rgdatum und Betrag eingegeben sein
IF LEN(cfkatalognr1$)*LEN(cfabdatum1$)*LEN(cfbetrag1$)=0 AND MAX(LEN(cfkatalognr1$),LEN(cfabdatum1$),LEN(cfbetrag1$))>0! irgendwo keine Eingabe ==>Müll
ELSE IF LEN(cfkatalognr2$)*LEN(cfabdatum2$)*LEN(cfbetrag2$)=0 AND MAX(LEN(cfkatalognr2$),LEN(cfabdatum2$),LEN(cfbetrag2$))>0! irgendwo keine Eingabe ==>Müll
ELSE IF LEN(cfkatalognr3$)*LEN(cfabdatum3$)*LEN(cfbetrag3$)=0 AND MAX(LEN(cfkatalognr3$),LEN(cfabdatum3$),LEN(cfbetrag3$))>0! irgendwo keine Eingabe ==>Müll
IF VAL(cfzinshfzeile1$)>0 AND VAL(cfzinshfzeile1$)<32 OR VAL(cfzinshfzeile1$)>34
~@rsc_alert(1,"Zinsen können nur|auf die Zeilen 32-34|bezogen werden !"," [OK ",1)
erstes_objekt%=cfzinshfzeile1&
error%=TRUE
ELSE IF VAL(cfzinshfzeile2$)>0 AND VAL(cfzinshfzeile2$)<32 OR VAL(cfzinshfzeile2$)>34
~@rsc_alert(1,"Zinsen können nur|auf die Zeilen 32-34|bezogen werden !"," [OK ",1)
erstes_objekt%=cfzinshfzeile2&
error%=TRUE
ELSE IF VAL(cfzinshfzeile3$)>0 AND VAL(cfzinshfzeile3$)<32 OR VAL(cfzinshfzeile3$)>34
~@rsc_alert(1,"Zinsen können nur|auf die Zeilen 32-34|bezogen werden !"," [OK ",1)
erstes_objekt%=cfzinshfzeile3&
error%=TRUE
ENDIF
'
' b) ist die bezogene Zeile überhaupt belegt ?
a%=VAL(cfzinshfzeile1$)
b%=VAL(cfzinshfzeile2$)
c%=VAL(cfzinshfzeile3$)
IF a%>0 AND CHAR{{OB_SPEC(cmbforderungbaum_adr%,cfkatalognr1&+(a%-32)*7)}}=""
~@rsc_alert(1,"Die angegebene Hauptzeile|ist nicht belegt !"," [OK ",1)
erstes_objekt%=cfzinshfzeile1&
error%=TRUE
ELSE IF b%>0 AND CHAR{{OB_SPEC(cmbforderungbaum_adr%,cfkatalognr1&+(b%-32)*7)}}=""
~@rsc_alert(1,"Die angegebene Hauptzeile|ist nicht belegt !"," [OK ",1)
erstes_objekt%=cfzinshfzeile2&
error%=TRUE
ELSE IF c%>0 AND CHAR{{OB_SPEC(cmbforderungbaum_adr%,cfkatalognr1&+(c%-32)*7)}}=""
~@rsc_alert(1,"Die angegebene Hauptzeile|ist nicht belegt !"," [OK ",1)
erstes_objekt%=cfzinshfzeile3&
error%=TRUE
ENDIF
'
' c) nur Normalzins _oder_ Diskontzins angegeben ?
IF cfnormalzins1$<>"" AND cfdiskontzins1$<>""
~@rsc_alert(1,"Bitte nur Normalzins|oder Diskontzins angeben !"," [OK ",1)
erstes_objekt%=cfnormalzins1&
error%=TRUE
ELSE IF cfnormalzins2$<>"" AND cfdiskontzins2$<>""
~@rsc_alert(1,"Bitte nur Normalzins|oder Diskontzins angeben !"," [OK ",1)
erstes_objekt%=cfnormalzins2&
error%=TRUE
ELSE IF cfnormalzins3$<>"" AND cfdiskontzins3$<>""
~@rsc_alert(1,"Bitte nur Normalzins|oder Diskontzins angeben !"," [OK ",1)
erstes_objekt%=cfnormalzins3&
error%=TRUE
ENDIF
'
' d) mindestens HF-Zeile, Zinssatz und Zinsstartdatum eingegeben ?
' Produkt ist null, wenn 1 Feld Leer, Summe>0, wenn ein Feld besetzt
IF LEN(cfzinshfzeile1$)*LEN(cfzinsstart1$)*MAX(LEN(cfdiskontzins1$),LEN(cfnormalzins1$))=0 AND LEN(cfzinshfzeile1$+cfnormalzins1$+cfdiskontzins1$+cfzinsstart1$)>0
ELSE IF LEN(cfzinshfzeile2$)*LEN(cfzinsstart2$)*MAX(LEN(cfdiskontzins2$),LEN(cfnormalzins2$))=0 AND LEN(cfzinshfzeile2$+cfnormalzins2$+cfdiskontzins2$+cfzinsstart2$)>0
ELSE IF LEN(cfzinshfzeile3$)*LEN(cfzinsstart3$)*MAX(LEN(cfdiskontzins3$),LEN(cfnormalzins3$))=0 AND LEN(cfzinshfzeile3$+cfnormalzins3$+cfdiskontzins3$+cfzinsstart3$)>0
fdgtxt$(j%+2)="Gesamtforderung am "+forderungsdatum$+": DM "+@dez_komma$(zinsdatum%(j%)/100,0,2,TRUE)+" zzgl. DM "+@dez_komma$(tageszinsen#,0,2,TRUE)+" weitere Zinsen/Tag"
~@rsc_laden(boot_pfad$+"\GELDHER1.RSC",-1,popupbaum&,h_menu&,alertbaum&) ! File$,Trees(-1:zählt selbst nach, sonst letzten Dialog einsetzen),Popup,Menu,Alert
~@rsc_laden(boot_pfad$+"\GELDHER2.RSC",-1,popupbaum&,h_menu&,alertbaum&) ! File$,Trees(-1:zählt selbst nach, sonst letzten Dialog einsetzen),Popup,Menu,Alert
ADD forderungsberechnungsspeicher%,12+10*(maximalbuchungen%+1)+(maximalbuchungen#+1)*80+(12+10*(maximalbuchungen%+1)) ! forderungstextfeld max ca. 80 Zeichen alng und Forderungsartfeld
' Gesamtspeicherbedarf incl. 50.000 Bytes für sonstiges wie Temporärfelder
' ohne Hintergrundrettung, da die über MALLOC im Systemspeicher läuft
IF RC_INTERSECT(ADD(xbase&,winlib_x_off&(nr&)),ADD(ybase&,winlib_y_off&(nr&)),width&-winlib_x_off&(nr&),height&-winlib_y_off&(nr&),xredr&,yredr&,wredr&,hredr&)
ELSE IF SHR(OB_TYPE(rsc_adr%,next_obj&),8)=27 AND BTST(OB_STATE(rsc_adr%,MAX(0,PRED(next_obj&))),5) AND (NOT BTST(OB_STATE(rsc_adr%,MAX(0,PRED(next_obj&))),3))
' (G_BOXCHAR, PRED: SHADOWED /NOT DISABLED)
next_obj&=PRED(next_obj&) ! Objektnr. Button
a$=@rsc_text$(tree&,next_obj&) ! Text des Buttons
evnt&=SHR&(OB_TYPE(rsc_adr%,next_obj&),8)-30 ! Nr. des Popup-Baumes
'
obj&=1
FOR ob_tail&=1 TO PRED(evnt&)
obj&=OB_NEXT(rsc_adr%(rsc_popup&),obj&) ! Objektnr. des Popups
NEXT ob_tail&
'
evnt&=SUCC(obj&)
DO WHILE a$<>@rsc_text$(rsc_popup&,evnt&)
INC evnt& ! Defaulteintrag
LOOP
'
REPEAT
INC evnt& ! Nächster Eintrag...
IF evnt&>OB_TAIL(rsc_adr%(rsc_popup&),obj&) ! ...gibt es nicht
evnt&=SUCC(obj&) ! ...dann wieder 1.
ENDIF
' ! bis nicht DISABLED
UNTIL NOT BTST(OB_STATE(rsc_adr%(rsc_popup&),evnt&),3)